package zhao.yao.chen.backend.basic.framework.banner.core;

import cn.hutool.core.thread.ThreadUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.util.ClassUtils;
import zhao.yao.chen.backend.basic.framework.common.util.spring.SpringUtils;

import java.util.concurrent.TimeUnit;

/**
 * 项目启动成功后，提供文档相关的地址
 *
 * @author zyc
 */
@Slf4j
public class BannerApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        ThreadUtil.execute(() -> {
            ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒，保证输出到结尾
            log.info("""

                            ----------------------------------------------------------
                            \t项目启动成功！
                            \t接口文档: \t{}\s
                            \t开发文档: \t{}\s
                            \t视频教程: \t{}\s
                            \t生产环境： \t{}\s
                            ----------------------------------------------------------""",
                    "https://doc.iocoder.cn/api-doc/",
                    "https://doc.iocoder.cn",
                    "https://t.zsxq.com/02Yf6M7Qn", SpringUtils.isProd());

            // 工作流
            if (isNotPresent("zhao.yao.chen.backend.basic.module.bpm.framework.flowable.config.BpmFlowableConfiguration")) {
                System.out.println("[工作流模块 basic-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]");
            }
            // 基础模块
            if (isNotPresent("zhao.yao.chen.backend.basic.module.infra.framework.web.config.InfraWebConfiguration")) {
                System.out.println("[基础建设模块 basic-module-infra - 已禁用][参考 https://doc.iocoder.cn/infra/ 开启]");
            }
        });
    }

    private static boolean isNotPresent(String className) {
        return !ClassUtils.isPresent(className, ClassUtils.getDefaultClassLoader());
    }

}
